package com.baturu.vin.hyundai.dto;

import com.baturu.vin.base.dto.BasePartsInfoDTO;
import com.baturu.vin.dto.EPCPartsImagePositionDTO;
import com.baturu.vin.hyundai.constant.HyundaiKiaCommonConstant;
import com.google.common.base.Splitter;
import com.google.common.collect.Sets;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;

import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import java.util.Set;

/**
 * Created by qindalong on 16/9/28.
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class KiaPartsDTO extends BasePartsInfoDTO implements Serializable {

    /**
     * 车型
     */
    private String crnm;
    /**
     * 配件目录号
     */
    private String bpno;
    /**
     * 开始日期
     */
    private String startTime;
    /**
     * 结束日期
     */
    private String endTime;
    /**
     * 配件编码
     */
    private String finalPartsCode;
    /**
     * 主组
     */
    private String classify;
    /**
     * 子组名
     */
    private String groupName;
    /**
     * 备注
     */
    private String finalPartsNote;
    /**
     * 配件图片地址
     */
    private String finalPartsImageUrl;

    /**
     * btr主名
     */
    private String btrPartsName;

    /**
     * 配件名称
     */
    private String finalPartName;

    private String groupNumber;
    private String groupCode;
    /**
     * 图片地址X轴方向座标
     */
    private int finalPartsImageX;
    /**
     * 图片地址Y轴方向座标
     */
    private int finalPartsImageY;
    /**
     * X方向偏移量
     */
    private int finalPartsImageOffsetX;
    /**
     * Y方向偏移量
     */
    private int finalPartsImageOffsetY;

    private String count;

    private String vehicleCode;

    private String imgX;

    private String imgY;

    /**
     * 存放图片信息
     */
    private List<EPCPartsImagePositionDTO> partsImagePositionDTOS;

    /**
     * epc备注
     */
    private String epcRemark;

    /**
     * 配件id
     */
    private String partsId;

    /**
     * 优选规则,全满足的feature数量
     */
    private int featureCount;

    /**
     * 是否被过滤掉 Y为过滤掉
     */
    private String filted;

    /**
     *
     */
    public List<String> getFinalPartsNoteList() {
        return Splitter.on(">")
                .omitEmptyStrings()
                .trimResults()
                .splitToList(finalPartsNote);
    }

    /**
     * 特殊描述信息中数字排列项目
     */
    @SuppressWarnings("unchecked")
    public Set<String> getFeatureCodesJson() {
        if (StringUtils.isBlank(vehicleCode)) {
            return Collections.EMPTY_SET;
        }
        List<String> list = Splitter.on(",").trimResults().omitEmptyStrings().splitToList(vehicleCode);
        return Sets.newHashSet(list);
    }

    @Override
    public String getPartsCode() {
        return finalPartsCode;
    }

    public String getPartsDistinctKey() {
        String distinctKey = finalPartsCode + finalPartsNote + finalPartName + count;
        if (HyundaiKiaCommonConstant.Y.equals(filted)) {
            return String.valueOf(finalPartsImageY + finalPartsImageX + finalPartsImageOffsetX + finalPartsImageOffsetY);
        }
        return distinctKey;
    }

    public String getGroupDistinctKey() {
        return groupCode + groupName + finalPartsCode;
    }

    public void increaseFeatureCount() {
        featureCount++;
    }
}
